#ifndef  xfloat_t
    #error "xfloat_t not defined"
    #define xhas_error
#endif

#ifndef  xlibc_function
    #error "xlibc_function not defined"
    #define xhas_error
#endif

#ifndef  xmixc_function
    #error "xmixc_function not defined"
    #define xhas_error
#endif

#ifndef xhas_error
    xassert_eq(xlibc_function(0.0), xmixc_function(0.0));
    xassert_eq(xlibc_function(0.4), xmixc_function(0.4));
    xassert_eq(xlibc_function(0.9), xmixc_function(0.9));
    xassert_eq(xlibc_function(-0.9), xmixc_function(-0.9));
    xassert_eq(xlibc_function(-0.4), xmixc_function(-0.4));
    xassert_fe(xlibc_function(0.6566876194613209e-308), xmixc_function(0.6566876194613209e-308));

    for(uxx i = 0; i < 16 * 1024; i++){
        xfloat_t expect     = {};
        xfloat_t actually   = {};
        xfloat_t v          = inc::random<xfloat_t>();
        expect              = xlibc_function(v);
        actually            = xmixc_function(v);

        xassert_fe(expect, actually, i, v);
    }
    
    #undef  xfloat_t
    #undef  xlibc_function
    #undef  xmixc_function
#else
    #undef  xhas_error
    #undef  xfloat_t
    #undef  xlibc_function
    #undef  xmixc_function
#endif

